package com.dqhl.stable;

import android.app.Application;

import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;

import org.xutils.x;

import cn.jpush.android.api.JPushInterface;

/**
 * Created by cheng on 2016/10/11.
 * MyApplication
 */
public class MyApplication extends Application {

    private static MyApplication mInstance = null;
    private AMapLocationClient aMapLocationClient;

    public AMapLocationClient getaMapLocationClient() {
        return aMapLocationClient;
    }

    public static MyApplication getmInstance() {
        return mInstance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mInstance = this;

        initXUtils();
        initJPush();
        initAMap();
    }

    /**
     * 初始化 xUtils
     */
    private void initXUtils() {
        x.Ext.init(this);
        x.Ext.setDebug(false); //是否输出debug日志
    }

    /**
     * 初始化 JPush
     */
    private void initJPush() {
        // 设置开启日志,发布时请关闭日志
        JPushInterface.setDebugMode(true);
        // 初始化 JPush
        JPushInterface.init(this);
    }

    /**
     * 初始化高德地图
     */
    private void initAMap() {
        aMapLocationClient = new AMapLocationClient(getApplicationContext());
        aMapLocationClient.setLocationOption(getDefaultOption());
    }

    /**
     * 默认的定位参数
     *
     * @return
     */
    private AMapLocationClientOption getDefaultOption() {
        AMapLocationClientOption mOption = new AMapLocationClientOption();
        //可选，设置定位模式，可选的模式有高精度、仅设备、仅网络。默认为高精度模式
        mOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //可选，设置是否gps优先，只在高精度模式下有效。默认关闭
        mOption.setGpsFirst(false);
        //可选，设置网络请求超时时间。默认为30秒。在仅设备模式下无效
        mOption.setHttpTimeOut(30000);
        //可选，设置定位间隔。
        mOption.setInterval(10000);
        //可选，设置是否返回逆地理地址信息。默认是ture
        mOption.setNeedAddress(true);
        //可选，设置是否单次定位。默认是false
        mOption.setOnceLocation(false);
        //可选，设置是否等待wifi刷新，默认为false.如果设置为true,会自动变为单次定位，持续定位时不要使用
        mOption.setOnceLocationLatest(false);
        //可选， 设置网络请求的协议。可选HTTP或者HTTPS。默认为HTTP
        AMapLocationClientOption.setLocationProtocol(AMapLocationClientOption.AMapLocationProtocol.HTTP);
        return mOption;
    }
}
